import tkinter, re, webbrowser
import tkinter.messagebox as msgbox

from urllib import parse


class APP:

    # 初始化GUI界面
    def __init__(self, width=500, height=300, title="VIP视频免费看"):

        self.width = width
        self.height = height
        self.title = title

        # 创建窗口,设置标题
        self.root = tkinter.Tk(className=self.title)

        # 创建tkinter的字符变量
        # 通道选择保存
        self.v = tkinter.IntVar()  # int
        self.v.set(1)  # 赋值：1


        # 访问地址保存
        self.url = tkinter.StringVar()  # str

        # 创建容器 Frame 有定位属性，可以把内部的控制按照排版定位
        frame_1 = tkinter.Frame(self.root)
        frame_2 = tkinter.Frame(self.root)

        # 创建控件
        # 边距：ipad 内部边距 pad 外部边距 默认：像素


        # text 文本 variable 关联变量 value 默认值
        tb_1 = tkinter.Radiobutton(frame_1, text="金桥解析", variable=self.v, value=1, width=15, height=2)
        tb_2 = tkinter.Radiobutton(frame_1, text="免费vip", variable=self.v, value=2, width=15, height=2)
        tb_3 = tkinter.Radiobutton(frame_1, text="18云解析", variable=self.v, value=3, width=15, height=2)
        tb_4 = tkinter.Radiobutton(frame_1, text="无名小站", variable=self.v, value=4, width=15, height=2)
        tb_5 = tkinter.Radiobutton(frame_1, text="☆新-plm3", variable=self.v, value=5, width=15, height=2)
        tb_6 = tkinter.Radiobutton(frame_1, text="☆新-爱酷", variable=self.v, value=6, width=15, height=2)
        tb_7 = tkinter.Radiobutton(frame_1, text="☆新-TV", variable=self.v, value=7, width=15, height=2)


        label = tkinter.Label(frame_2, text="请输入视频链接")
        entry = tkinter.Entry(frame_2, textvariable=self.url, width=30)

        # font 字体
        # command 指令，可以捆绑一个函数响应
        play = tkinter.Button(frame_2, text="播放", font=("黑体", 12), width=5, height=3, command=self.video_play)

        # 根据容器刚好容纳放置控件大小
        frame_1.pack()
        frame_2.pack()

        # 栅格定位


        tb_1.grid(row=0, column=1)
        tb_2.grid(row=0, column=2)
        tb_3.grid(row=0, column=3)
        tb_4.grid(row=1, column=1)
        tb_5.grid(row=1, column=2)
        tb_6.grid(row=1, column=3)
        tb_7.grid(row=2, column=1)

        label.grid(row=3, column=0)
        entry.grid(row=3, column=1)
        play.grid(row=4, column=2)

    # 破解视频
    def video_play(self):
        # 第三方视频的接口
        """
<option value="http://vip.jlsprh.com/index.php?url=" selected="">VIP视频解析接口09：★★★</option>
<option value="http://player.jidiaose.com/supapi/iframe.php?v=" selected="">VIP视频解析接口10：★★★</option>
<option value="http://jx.hezeshi.net/index.php?url=" selected="">VIP视频解析接口11：★★★</option>
<option value="http://jx.hezeshi.net/vip/jlexi.php?url=" selected="">VIP视频解析接口12：★★★</option>
        """
        path_1 = "http://jqaaa.com/jx.php?url="
        path_2 = "http://vip.jlsprh.com/index.php?url="
        path_3 = "http://www.wmxz.wang/video.php?url="
        path_4 = "http://api.nobij.top/jx/?url="
        path_5 = "https://www.playm3u8.cn/jiexi.php?url="
        path_6 = "https://www.ikukk.com/?url="
        path_7 = "http://vip.tvyb10.com/"

        # re.match()匹配正则，是否满足条件
        if re.match(r"https?:/{2}\w.+$", self.url.get()):
            # 路径加密：把中文、特殊字符转化成二进制
            ip = parse.quote_plus(self.url.get())
            # 调用本地浏览器
            if self.v.get() == 1:
                webbrowser.open(url=path_1 + ip)
            if self.v.get() == 2:
                webbrowser.open(url=path_2 + ip)
            if self.v.get() == 3:
                webbrowser.open(url=path_3 + ip)
            if self.v.get() == 4:
                webbrowser.open(url=path_4 + ip)
            if self.v.get() == 5:
                webbrowser.open(url=path_5 + ip)
            if self.v.get() == 6:
                webbrowser.open(url=path_6 + ip)
            if self.v.get() == 7:
                webbrowser.open(url=path_7)
        else:
            msgbox.showerror(title="错误", message="视频地址无效，请重新输入")

    # 启动类
    def run(self):
        # 设置窗口的大小
        self.root.geometry(str(self.width) + "x" + str(self.height))
        # 允许用户控制窗口的大小
        self.root.resizable(width=True, height=True)
        # 启动窗口
        self.root.mainloop()


app = APP()
app.run()
